#[cfg(test)]
mod tests {
  // 2.next() 方法
  // 执行cargo test -- --nocapture 可以看到输出
  #[test]
  fn next_demo() {
    let v2 = vec![1,2,3];
    let mut v2_iter = v2.iter();
    assert_eq!(v2_iter.next(), Some(&1));
    assert_eq!(v2_iter.next(), Some(&2));
    assert_eq!(v2_iter.next(), Some(&3));
  }
  #[test]
  fn xiaohao() {
    // 13.6
    // rust中的迭代器是惰性的, 需要手动消耗
    // 2. 迭代器适配器: 能够把迭代器转换为不同种类的迭代器
    // 2.1 map
    let v2 = vec!(9,9,9);
    let v2_iter = v2.iter();
    // map方法会返回一个新的迭代器, 不会消耗掉原来的迭代器
    // 需要手动调用迭代器消耗方法, 以下代码才会执行
    let v2_iter2: Vec<_> = v2_iter.map(|x| x + 1).collect();
    // Vec<_>表示, 这个集合中的元素类型是未知的, 让编译器自动推导
    assert_eq!(v2_iter2, vec!(10,10,10));
  }
}